package com.hongyi.common.framework.utils.common;


import java.util.*;

public class CollectionUtils {

    /**
     * 集合是否为空
     *
     * @param collection 集合
     * @return 是否为空
     */
    public static boolean isEmpty(Collection<?> collection) {
        return collection == null || collection.isEmpty();
    }

    /**
     * 集合是否为非空
     *
     * @param collection 集合
     * @return 是否为非空
     */
    public static boolean isNotEmpty(Collection<?> collection) {
        return !isEmpty(collection);
    }


    /**
     * 创建一个新ArrayList集合
     *
     * @param values 创建集合的内容
     * @return ArrayList集合
     */
    @SafeVarargs
    public static <T> ArrayList<T> newArrayList(T... values) {
        return (ArrayList)list(false, values);
    }

    @SafeVarargs
    public static <T> List<T> list(boolean isLinked, T... values) {
        if (ArrayUtils.isEmpty(values)) {
            return list(isLinked);
        } else {
            List<T> arrayList = isLinked ? new LinkedList() : new ArrayList(values.length);
            Collections.addAll((Collection)arrayList, values);
            return (List)arrayList;
        }
    }

    public static <T> List<T> list(boolean isLinked) {
        return (List)(isLinked ? new LinkedList() : new ArrayList());
    }

    /**
     * 创建一个新ArrayList集合
     *
     * @param ts 集合
     * @return HashSet集合
     */
    @SafeVarargs
    public static <T> HashSet<T> newHashSet(T... ts) {
        return set(false, ts);
    }

    @SafeVarargs
    public static <T> HashSet<T> set(boolean isSorted, T... ts) {
        if (null == ts) {
            return (HashSet)(isSorted ? new LinkedHashSet() : new HashSet());
        } else {
            int initialCapacity = Math.max((int)((float)ts.length / 0.75F) + 1, 16);
            HashSet<T> set = isSorted ? new LinkedHashSet(initialCapacity) : new HashSet(initialCapacity);
            Collections.addAll((Collection)set, ts);
            return (HashSet)set;
        }
    }


}
